reduce concurrent reconciles of the same virtual resource #2246
+98
−105
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What issue type does this pull request address? (keep at least one, remove the others)
/kind bugfix
What does this pull request do? Which issues does it resolve? (use
resolves #<issue_number>
if possible)resolves ENG-4924
Please provide a short message that should be published in the vcluster release notes
Fixed an issue where vcluster incorrectly re-created pods during garbage collection
What else do we need to know?
The previous method of passing through the
syncEventType
would potentially enqueue the same object 4 different ways:ns/obj
delete#ns/obj
host#ns/obj
delete#host#ns/obj
Usually this would not be a concern, but the following scenario occurs frequently enough to cause a conformance test to fail:
deletionTimestamp
Reconcile
function is processing the virtual object update the virtual object is deleted, this leads to theSyncToVirtual
implementation incorrectly re-creating the virtual objectThis PR attempts to solve this by:
delete#
prefixsyncEventType
through toReconcile
(and the various sync event types). Event types are recorded by virtual object UID, only the last event is saved, and a delete event for a UID cannot be overwritten.